package com.teach.util;

import com.teach.CodeException;

/**
 * <pre>
 * 密码工具类
 * Class: com.teach.util.PasswordUtil
 * Copyright 2022 jlzhou.top Inc. All rights reserved.
 * Warning: this content is only for internal circulation of the company.
 *          It is forbidden to divulge it or use it for other commercial purposes.
 * </pre>
 * 
 * @author J.L.Zhou
 * @since 2022年10月22日 下午1:55:41
 * @version 1.0
 */
public interface PasswordUtil {

  /**
   * - 加密
   * 
   * @param password 密码明文
   * @throws CodeException 20:密码不能为空
   * @return
   */
  String encode(String password) throws CodeException;

  /**
   * - 含盐值的加密
   * 
   * @param password 密码明文
   * @param salt     盐值
   * @throws CodeException 20:密码不能为空,21:密码不能为空
   * @return
   */
  String encode(String password, String salt) throws CodeException;

  /**
   * - 含盐值的多次加密
   * 
   * @param password 密码明文
   * @param salt     盐值
   * @param num      加密次数
   * @throws CodeException 22:加密次数不能小于1
   * @return
   */
  String encode(String password, String salt, int num) throws CodeException;
}
